فرمان tee یکی از ابزارهای مفید لینوکس است که
خروجی یک دستور را هم به صفحه نمایش (STDOUT) میفرستد و هم در یک فایل ذخیره میکند.
یعنی مثل یک لوله (Pipe) عمل میکند که یک انشعاب دارد.
tee از نام یک لولهی اتصال T شکل در لولهکشی گرفته شده است
که آب را به دو مسیر مختلف هدایت میکند. در لینوکس، tee خروجی را به دو مسیر میفرستد:
توضیح: خروجی command از طریق | (Pipe) به tee داده میشود
و tee آن را هم در ترمینال نمایش میدهد و هم در فایل(های) مشخص شده ذخیره میکند.
توضیح: فایل /etc/passwd را در دایرکتوری جاری کپی میکند.
توضیح: نمایش خطوطی از passwd که شامل root هستند.
توضیح: خطوطی که با root شروع میشوند (کاربر اصلی root).
توضیح: خروجی در فایل mohammad ذخیره میشود، اما در ترمینال نمایش داده نمیشود.
استفاده از > خروجی را فقط در فایل ذخیره میکند و در ترمینال نمایش نمیدهد.
توضیح:
cat passwd | grep root → خطوط حاوی root را پیدا میکند.tee root.txt → خروجی را در root.txt ذخیره میکند و همزمان در ترمینال نمایش میدهد.grep ^root > mohammad → از خروجی tee، خطوطی که با root شروع میشوند را در mohammad ذخیره میکند.root.txt شامل همه خطوط حاوی root است.mohammad فقط شامل خطی است که با root شروع میشود.tee آنها را چاپ کرد).| گزینه | توضیح | مثال |
|---|---|---|
-a یا --append |
خروجی را به انتهای فایل اضافه میکند (بازنویسی نمیکند) | echo "new" | tee -a file.txt |
-i یا --ignore-interrupts |
سیگنالهای وقفه (Interrupt) را نادیده میگیرد | command | tee -i file.txt |
توضیح: "Hello" را در سه فایل مختلف ذخیره میکند و در ترمینال هم نمایش میدهد.
توضیح: "World" را به انتهای file1.txt اضافه میکند و در ترمینال نمایش میدهد.
توضیح: با استفاده از sudo tee، میتوانید در فایلهای سیستمی که نیاز به دسترسی روت دارند، بنویسید.
استفاده از sudo echo > file کار نمیکند، زیرا > توسط شل (نه توسط echo) اجرا میشود.
برای نوشتن در فایلهای سیستمی، از sudo tee استفاده کنید.
| دستور | خروجی در ترمینال | ذخیره در فایل |
|---|---|---|
command |
✅ بله | ❌ خیر |
command > file |
❌ خیر | ✅ بله (بازنویسی) |
command >> file |
❌ خیر | ✅ بله (افزودن) |
command \| tee file |
✅ بله | ✅ بله (بازنویسی) |
command \| tee -a file |
✅ بله | ✅ بله (افزودن) |
ifconfig را با tee در network.txt ذخیره کنید و همزمان در ترمینال ببینید.tee -a خروجی date را به انتهای یک فایل اضافه کنید.sudo tee یک تنظیم جدید به /etc/hosts اضافه کنید.tee در دو فایل مختلف ذخیره کنید.